
https://leetcode.cn/problems/find-median-from-data-stream/description/
//class MedianFinder {
//public:
//    MedianFinder() {}
//
//    void addNum(int num) {
//
//        if (MaxPq.size() == MinPq.size()) {
//            if (MaxPq.empty() || num <= MaxPq.top()) {
//                MaxPq.push(num);
//            }
//            else {
//                MinPq.push(num);
//                int x = MinPq.top();
//                MinPq.pop();
//                MaxPq.push(x);
//            }
//        }
//        else {
//            if (num <= MaxPq.top()) {
//                MaxPq.push(num);
//                int x = MaxPq.top();
//                MaxPq.pop();
//                MinPq.push(x);
//            }
//            else {
//                MinPq.push(num);
//            }
//        }
//    }
//
//    double findMedian() {
//        if (MaxPq.size() == MinPq.size()) {
//            return ((double)MaxPq.top() + (double)MinPq.top()) / 2.0;
//        }
//        return MaxPq.top();
//    }
//
//    priority_queue<int> MaxPq;
//    priority_queue<int, vector<int>, greater<int>> MinPq;
//};
//
///**
// * Your MedianFinder object will be instantiated and called as such:
// * MedianFinder* obj = new MedianFinder();
// * obj->addNum(num);
// * double param_2 = obj->findMedian();
// */

https://leetcode.cn/problems/top-k-frequent-words/description/

//class Solution {
//public:
//
//    struct Less {
//        bool operator()(const pair<string, int>& k1, const pair<string, int>& k2) {
//
//            if (k1.second < k2.second) {
//                return true;
//            }
//            if (k1.second == k2.second && k1.first > k2.first) {
//                return true;
//            }
//            return false;
//        }
//    };
//
//    vector<string> topKFrequent(vector<string>& words, int k) {
//
//        unordered_map<string, int> Hash;
//        for (auto& x : words) {
//            Hash[x]++;
//        }
//
//        typedef   priority_queue<pair<string, int>, vector<pair<string, int>>, Less> MaxQu;
//        MaxQu mx(Hash.begin(), Hash.end());
//
//        vector<string> vs;
//        while (k--) {
//            vs.push_back(mx.top().first);
//            mx.pop();
//        }
//        return vs;
//    }
//};